package com.learning.rpc.rpc;

/**
 * ClassName: Invoker
 * Description:
 * 1. 消费者调用服务，通过 Invoker 对象
 * 2. 服务提供者调用 具体实现类，也通过 Invoker 对象
 * Date: 2022/5/16 17:29 【需求编号】
 *
 * @author Sam Sho
 * @version V1.0.0
 */
public interface Invoker {
    /**
     * 返回接口
     *
     * @return Class
     */
    Class getInterface();

    /**
     * 发起调用【负载均衡、容错、重连..都在这里面了】
     *
     * @param invocation 调用所需的参数
     * @return Object 执行结果
     * @throws Exception
     */
    Object invoke(Invocation invocation) throws Exception;
}
